package com.monitor.model;

import java.util.List;

/**
 * 服务器配置模型类
 * 存储单个服务器的连接信息和监控项配置
 * 对应servers.json文件中的配置项
 */
public class ServerConfig {
    private String id;             // 服务器唯一标识
    private String name;           // 服务器名称/别名
    private String host;           // 服务器主机地址
    private int port;              // SSH端口
    private String username;       // 登录用户名
    private String authType;       // 认证类型：PASSWORD或KEY
    private String password;       // 密码(密码认证方式)
    private String privateKeyPath; // 私钥文件路径(密钥认证方式)
    private List<String> monitorItems; // 需要监控的项目列表
    private int timeout;          // 连接超时时间(毫秒)
    private String osType;        // 操作系统类型(linux/windows)

    /**
     * 获取服务器唯一标识
     * @return 服务器ID
     */
    public String getId() {
        return id;
    }

    /**
     * 设置服务器唯一标识
     * @param id 服务器ID
     */
    public void setId(String id) {
        this.id = id;
    }

    /**
     * 获取服务器名称
     * @return 服务器名称/别名
     */
    public String getName() {
        return name;
    }

    /**
     * 设置服务器名称
     * @param name 服务器名称/别名
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取服务器主机地址
     * @return 主机地址(IP或域名)
     */
    public String getHost() {
        return host;
    }

    /**
     * 设置服务器主机地址
     * @param host 主机地址(IP或域名)
     */
    public void setHost(String host) {
        this.host = host;
    }

    /**
     * 获取SSH端口
     * @return 端口号
     */
    public int getPort() {
        return port;
    }

    /**
     * 设置SSH端口
     * @param port 端口号
     */
    public void setPort(int port) {
        this.port = port;
    }

    /**
     * 获取登录用户名
     * @return 用户名
     */
    public String getUsername() {
        return username;
    }

    /**
     * 设置登录用户名
     * @param username 用户名
     */
    public void setUsername(String username) {
        this.username = username;
    }

    /**
     * 获取认证类型
     * @return 认证类型(PASSWORD或KEY)
     */
    public String getAuthType() {
        return authType;
    }

    /**
     * 设置认证类型
     * @param authType 认证类型(PASSWORD或KEY)
     */
    public void setAuthType(String authType) {
        this.authType = authType;
    }

    /**
     * 获取密码
     * @return 用于密码认证的密码
     */
    public String getPassword() {
        return password;
    }

    /**
     * 设置密码
     * @param password 用于密码认证的密码
     */
    public void setPassword(String password) {
        this.password = password;
    }

    /**
     * 获取私钥文件路径
     * @return 用于密钥认证的私钥文件路径
     */
    public String getPrivateKeyPath() {
        return privateKeyPath;
    }

    /**
     * 设置私钥文件路径
     * @param privateKeyPath 用于密钥认证的私钥文件路径
     */
    public void setPrivateKeyPath(String privateKeyPath) {
        this.privateKeyPath = privateKeyPath;
    }

    /**
     * 获取监控项列表
     * @return 需要监控的项目列表
     */
    public List<String> getMonitorItems() {
        return monitorItems;
    }

    /**
     * 设置监控项列表
     * @param monitorItems 需要监控的项目列表
     */
    public void setMonitorItems(List<String> monitorItems) {
        this.monitorItems = monitorItems;
    }

    /**
     * 获取超时时间
     * @return 连接超时时间(毫秒)
     */
    public int getTimeout() {
        return timeout;
    }

    /**
     * 设置超时时间
     * @param timeout 连接超时时间(毫秒)
     */
    public void setTimeout(int timeout) {
        this.timeout = timeout;
    }

    /**
     * 获取操作系统类型
     * @return 操作系统类型(linux/windows)
     */
    public String getOsType() {
        return osType != null ? osType : "linux"; // 默认为linux
    }

    /**
     * 设置操作系统类型
     * @param osType 操作系统类型(linux/windows)
     */
    public void setOsType(String osType) {
        this.osType = osType;
    }
} 